package com.per.demobeetlsql.datasource;

/**
 * @author Cheng
 * @date 2020/9/24 16:04
 */
public class DbContextHolder {

    /**
     * 绑定当前线程
     */
    private static ThreadLocal<String> dataSourceKey = new ThreadLocal<>();


    /**
     * 设置当前线程使用的数据源key
     *
     * @param dataSourceType 数据源key
     */
    public static void setDataSourceKey(String dataSourceType) throws Exception {
        // 数据源中没有这个key
        if (DynamicDataSource.dynamicTargetDataSources == null || DynamicDataSource.dynamicTargetDataSources.get(dataSourceType) == null) {
            throw new RuntimeException("没有这个数据源");
        }
        dataSourceKey.set(dataSourceType);
    }

    /**
     * 获取当前线程使用的数据源key
     *
     * @return 数据源key
     */
    public static String getDataSourceKey() {
        return dataSourceKey.get();
    }

    /**
     * 清除数据源
     */
    public static void clearDataSourceKey() {
        dataSourceKey.remove();
    }
}
